//struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB) {
//    struct ListNode* curA, * curB;
//    int lenA = 1, lenB = 1;
//    curA = headA;
//    curB = headB;
//    while (curA->next)
//    {
//        lenA++;
//        curA = curA->next;
//    }
//    while (curB->next)
//    {
//        lenB++;
//        curB = curB->next;
//    }
//
//
//    if (curA != curB)
//    {
//        return NULL;
//    }
//
//    if (lenA > lenB)
//    {
//        curA = headA;
//        curB = headB;
//        lenA = lenA - lenB;
//    }
//    else
//    {
//        curA = headB;
//        curB = headA;
//        lenA = lenB - lenA;
//    }
//    while (lenA--)
//    {
//        curA = curA->next;
//    }
//    while (curA && curB)
//    {
//        if (curA == curB)
//        {
//            return curA;
//        }
//        curA = curA->next;
//        curB = curB->next;
//
//    }
//    return NULL;
//}